<?php

abstract class UnidadDao {

   abstract public function encontrarTodos();
   abstract public function encontrarTodosUnidadPersonas(CriterioDeBusqueda $criterioDeBusqueda);
   abstract public function encontrar($id = -1);

   protected function crearConsultaUnidadPersona(CriterioDeBusqueda $criterioDeBusqueda){

       $q = Doctrine_Query::create();
       $q->from('UnidadPersona unidad_persona');
       $q->leftJoin('unidad_persona.Persona persona');


       if ($criterioDeBusqueda->getLimite() > 0){
       	$q->limit($criterioDeBusqueda->getLimite());
       }

       $comparacion = $criterioDeBusqueda->getCriteriosDeBusquedaComparacion();
       foreach ($criterioDeBusqueda->getCriteriosDeBusqueda() as $campo => $valor) {
            $where = $campo." ".$comparacion[$campo]." '".$valor."'";
            $q->addWhere($where);
       }

       foreach ($criterioDeBusqueda->getCriteriosDeOrden() as $campo => $valor) {
            $order = $campo." ".$valor."";
            $q->addOrderBy($order);
       }



       return $q;

   }
}
?>